/**
 * Author: YuBing 羽冰
 *  time : 2021/5/24
 * description: 基于node框架Express的处理上传图片的类
 * dependency module: fs、path
 */

// 使用步骤:

// 1. 在调用处理图片函数的路由文件中引入图片处理模块
/*  
    var multer = require("multer");
    var upload = multer({ dest: "[这里写图片要存放的地方的相对路径]" }); 

    例如: 这表示将获取到的图片保存在路径为./public/images/  的目录下
        var multer = require("multer");
        var upload = multer({ dest: "./public/images/" });
*/
// 2. 配置使用路由接收图片:
/* 
    // 这里下面配置的是接收单个图片的，接收多图片的还没试过
    // 单个图片接收
    router.post("[routerPath]", upload.single("[Name]"), [这里写路由调用的函数]);
    // 多个图片接收
    router.post("[routerPath]", upload.array("[Name]",picNumber), [这里写路由调用的函数]);
 */

/* 
    path:{
        webPath,    --->网络路径,如 http://10.20.159.119
        localPath,  --->本地相对路径
        [nowPath]   --->删除图片时传入的前端显示的网络完整路径
    }
    img             --->Express接收到的图片对象
*/
// 文件系统
var fs = require("fs");
// 路径模块
var Path = require("path");

function imgOption(img, imgPath) {
    var webPath = imgPath.webPath;
    var localPath = imgPath.localPath;
    var nowPath = imgPath.nowPath;
    var picPath;

    // 如果传入的当前文件所在路径就删除
    // 路径指的是网络上的路径不是本地路径
    if (nowPath) {
        // 先删除之前的文件
        try {
            var reg = new RegExp(webPath, "g");
            nowPath = nowPath.replace(reg, localPath);
            fs.unlinkSync(nowPath);
        } catch (Err) { }
    }

    // 传入了路径就进行添加
    if (localPath && webPath && img) {
        // 后缀名
        var afterName;
        if (img.mimetype.split("/")[1] == "x-icon") {
            afterName = "." + img.mimetype.split("-")[1];
        }
        else afterName = "." + img.mimetype.split("/")[1];

        // 修改文件命名成正确格式
        fs.renameSync(Path.join(localPath, img.filename), Path.join(localPath, img.filename + afterName));

        // 图片路径
        picPath = webPath + img.filename + afterName;

        return picPath;
    }
}

module.exports = {
    setModel,
    imgOption
}